package com.example.demo.module.repository.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.demo.common.entity.enums.RepositoryTypeEnum;
import com.example.demo.common.service.BaseService;
import com.example.demo.entity.pojo.repository.MaterialPoJo;

import java.util.List;

/**
 * MaterialService.
 *
 * @author Mei Ruoxiao
 * @since 2020/9/15
 */
public interface MaterialService extends BaseService<MaterialPoJo> {
    /**
     * 新增材料
     *
     * @param poJo      材料对象
     * @param companyId 企业ID
     * @return id
     */
    long create(MaterialPoJo poJo, final long companyId);

    /**
     * 根据产品编码获取产品
     *
     * @param code 产品编码
     * @return pojo
     */
    MaterialPoJo getOne(String code);

    /**
     * 根据内容验证获取产品
     *
     * @param verify 内容验证
     * @return pojo
     */
    MaterialPoJo get(String verify);


    /**
     * 获取材料列表
     *
     * @param keywords     关键字
     * @param type         材料仓库类型 {@link RepositoryTypeEnum#value()}
     * @param repositoryId 仓库文件夹
     * @param page         当前页数
     * @param size         每页大小
     * @param companyId    企业ID
     * @return page
     */
    Page<MaterialPoJo> page(String keywords, final int type, final Long repositoryId, final int page, final int size, final long companyId);

    /**
     * 根据文件夹ID查询素材列表
     *
     * @param repositoryId 仓库文件夹ID
     * @param companyId    企业ID
     * @return list 素材列表
     */
    List<MaterialPoJo> listByRepositoryId(final long repositoryId, final long companyId);

    /**
     * 转仓（支持单个和批量）
     *
     * @param ids          ids
     * @param repositoryId 仓库ID
     * @param quantity     转仓数量
     * @param type         材料类型  {@link RepositoryTypeEnum#value()}
     * @param companyId    企业ID
     * @return true/false
     */
    boolean move(final List<Long> ids, final long repositoryId, final int quantity, final int type, final long companyId);
}
